home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / sound / players / naudio.lzh / naudio / examples / ex2.c < prev    next >
C/C++ Source or Header  |  1993-11-23  |  4KB  |  145 lines

  1. #include "ex.h"
  2. #include <aes.h>
  3. #include <string.h>
  4. #include <naudio\naudio.h>
  5.  
  6. /* This little example is an example of BAD C-Programming, and BAD
  7.    GEM-Programming, since it does NO error checking. On the other
  8.    hand the NAUDIO code is done properly, what you care about any-
  9.    way. The lack of error checking is to keep the source short,
  10.    as to not obscure the NAUDIO functionality.
  11.  */
  12. #define WTYPE  (NAME | CLOSER | MOVER)
  13.  
  14.  
  15. static void join( char *dst, char *path, char * file)
  16. {
  17.    strcpy( dst, path);
  18.    strcpy( strrchr( dst, '\\') + 1, file);
  19. }
  20.  
  21.  
  22. main()
  23. {
  24.    OBJECT         *tree, *menu;
  25.    int            id;
  26.    unsigned int   ev;
  27.    int            x, y, w, h, dmy;
  28.    int            mbuf[ 8];
  29.    auto char      path[ 128],
  30.                   filename[ 32],
  31.                   full[ 256];
  32.    n_module       *p = 0;
  33.  
  34.  
  35.    appl_init();
  36.    graf_mouse( 0, NULL);
  37.    naudio_init();
  38.    naudio_some();
  39.    if( naudio_engine( NTRACKER) < 0)
  40.    {
  41.       form_alert( 1, "[1][NAUDIO Initialization failed!][ EXIT ]");
  42.       appl_exit();
  43.       return( -1);
  44.    }
  45.  
  46.    rsrc_load( "ex.rsc");
  47.    rsrc_gaddr( R_TREE, T_DIAL, &tree);
  48.    rsrc_gaddr( R_TREE, T_MENU, &menu);
  49.    menu_bar( menu, 1);
  50.    wind_calc( WC_BORDER, WTYPE, tree->ob_x, tree->ob_y,
  51.                                 tree->ob_width, tree->ob_height,
  52.                                 &x, &y, &w, &h);
  53.    id = wind_create( WTYPE, x, y, w, h);
  54.    wind_open( id, x, y, w, h);
  55.    wind_set( id, WF_NAME, "NAUDIO-EX2");
  56.  
  57.    for( ;;)
  58.    {
  59.       ev = evnt_multi( MU_BUTTON | MU_MESAG, 2, 3, 1,
  60.                        0, 0, 0, 0, 0,
  61.                        0, 0, 0, 0, 0,
  62.                        mbuf,
  63.                        0, 0,
  64.                        &x, &y, &dmy, &dmy, &dmy, &dmy);
  65.  
  66.       if( ev & MU_BUTTON)
  67.       {
  68.          int   no;
  69.  
  70.          if( (no = objc_find( tree, 0, 16, x, y)) >= 0 &&
  71.              ! form_button( tree, no, 1, &dmy))
  72.          {
  73.             objc_change( tree, no, 0, tree->ob_x, tree->ob_y,
  74.                                       tree->ob_width, tree->ob_height,
  75.                                       0, SELECTED);
  76.             switch( no)
  77.             {
  78.                case D_LOAD :
  79.                   fsel_input( path, filename, &dmy);
  80.                   if( dmy)
  81.                   {
  82.                      nmodule_stop();
  83.                      if( p)
  84.                         nmodule_free( p);
  85.                      join( full, path, filename);
  86.                      if( ! (p = nmodule_load( full)))
  87.                         form_alert( 1, "[2][Load failed][ OK ]");
  88.                   }
  89.                   break;
  90.  
  91.                case D_PLAY :
  92.                   naudio_stop();
  93.                   naudio_start( 1);    /* superflous, but harmless a 2nd time */
  94.                   if( p)
  95.                      nmodule_play( p, 0, 0, 0, 2);
  96.                   break;
  97.  
  98.                case D_SAVE :
  99.                   if( p)
  100.                   {
  101.                      fsel_input( path, filename, &dmy);
  102.                      if( dmy)
  103.                      {
  104.                         join( full, path, filename);
  105.                         if( nmodule_save( full, p, 1))
  106.                            form_alert( 1, "[2][Save failed][ OK ]");
  107.                      }
  108.                   }
  109.                   break;
  110.             }
  111.          }
  112.       }
  113.  
  114.       if( ev & MU_MESAG)
  115.       {
  116.          switch( mbuf[ 0])
  117.          {
  118.             case MN_SELECTED :
  119.             case WM_CLOSED :
  120.                goto done;
  121.  
  122.             case WM_MOVED :
  123.                wind_set( id, WF_CURRXYWH, mbuf[4], mbuf[5], mbuf[6], mbuf[7]);
  124.                wind_calc( WC_WORK, WTYPE, mbuf[4], mbuf[5], mbuf[6], mbuf[7],
  125.                                           &tree->ob_x, &tree->ob_y,
  126.                                           &tree->ob_width, &tree->ob_height);
  127.                break;
  128.  
  129.             case WM_REDRAW :
  130.                objc_draw( tree, 0, 16, mbuf[ 4], mbuf[ 5], mbuf[ 6], mbuf[ 7]);
  131.          }
  132.       }
  133.    }
  134. done:
  135.    menu_bar( menu, 0);
  136.    wind_close( id);
  137.    wind_delete( id);
  138.    appl_exit();
  139.    naudio_done();
  140.    return( 0);
  141. }
  142.  
  143.  
  144.  
  145.